gl renderer: Dont't try to draw glyphs at scale 0
authorTimm Bäder <mail@baedert.org>
Thu, 10 Jan 2019 16:14:48 +0000 (17:14 +0100)
committerTimm Bäder <mail@baedert.org>
Thu, 10 Jan 2019 16:14:48 +0000 (17:14 +0100)
Fixes #1475

gsk/gl/gskglglyphcache.c
gsk/gl/gskglglyphcacheprivate.h
gsk/gl/gskglrenderer.c

index dd0a3a5143505697eceaf0c96fb4561eccc52670..dc8d5149a97a0733d2546fceac9dc08f5f509318 100644 (file)
@@ -322,12 +322,13 @@ gsk_gl_glyph_cache_lookup (GskGLGlyphCache *cache,
       value->draw_height = ink_rect.height;
       value->timestamp = cache->timestamp;
       value->atlas = NULL; /* For now */
+      value->scale = (guint)(scale * 1024);
 
       key->font = g_object_ref (font);
       key->glyph = glyph;
       key->scale = (guint)(scale * 1024);
 
-      if (ink_rect.width > 0 && ink_rect.height > 0)
+      if (ink_rect.width > 0 && ink_rect.height > 0 && key->scale > 0)
         add_to_cache (cache, key, value);
 
       g_hash_table_insert (cache->hash_table, key, value);
index 4f162c4e38a9ce5cfe6b4c4753ba652dded22292..d93bbdcfc69e62c747341c5a0ab02e34cf2161e3 100644 (file)
@@ -59,6 +59,8 @@ struct _GskGLCachedGlyph
   int draw_width;
   int draw_height;
 
+  float scale;
+
   guint64 timestamp;
 };
 
index 1b3d15a794467f1658383427c8b1e50fc3a890a2..cdac8a1410a420ccc02c963f27dec7b805b16272 100644 (file)
@@ -496,7 +496,7 @@ render_text_node (GskGLRenderer   *self,
                                          text_scale);
 
       /* e.g. whitespace */
-      if (glyph->draw_width <= 0 || glyph->draw_height <= 0)
+      if (glyph->draw_width <= 0 || glyph->draw_height <= 0 || glyph->scale <= 0)
         goto next;
 
       cx = (double)(x_position + gi->geometry.x_offset) / PANGO_SCALE;